home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Tutorial Material / Zone Tutorial / Structure Examples / 2. Study2 < prev    next >
Lisp/Scheme  |  1998-10-26  |  2KB  |  87 lines

  1. ; structure study for two synthesisers
  2. ; notice: rhythms written in tick values which result to very rapid
  3. ; rhythms with the new whole note tick value
  4.  
  5. (create-tonality clusters '(c 3 c# 3 f 3 f# 3 g 3 b 3))
  6. (create-tonality spaces '(c 3 c# 3 d# 3 f# 3 b 3 f 4 c 4 g# 4 e 5))
  7.  
  8. (setq chord1 (activate-tonality (clusters c 5)))
  9. (setq chord2 (activate-tonality (clusters c# 5)))
  10. (setq chord3 (activate-tonality (clusters f# 3)))
  11.  
  12. (setq tonal (activate-tonality (spaces c 3)))
  13. (setq tonal1 (activate-tonality (spaces c 5)))
  14.  
  15. (setq row '(a d c f =))
  16.  
  17. (initdef)
  18. (defsym a '(ab cd df))
  19. (defsym b (append row '(bc def)))
  20. (defsym f '(b a f = cdf))
  21.  
  22. ; Nigel has been using tick value 96 for 1/4 note. 
  23. ; Because Nigel often mixes ticks and ratios, the function must take
  24. ; both cases into account.
  25.  
  26. (defun use-nigel-ticks (l)
  27.   (let (out)
  28.     (dolist (x l)
  29.       (if (is-length-symbol x)
  30.         (push x out)
  31.         (push (* x 5) out)))
  32.     (nreverse out)))
  33.  
  34. (setq rhy1 (use-nigel-ticks '(1/32)))
  35. (setq rhy2 (use-nigel-ticks 
  36.             (vector-to-list (vector-round 6 192 (gen-sin 2 0.7 32 120)))))
  37.  
  38. (setq rhy3 (use-nigel-ticks (gen-loop '(1 4 3 2) '(12 18 24 30))))
  39. (setq rhy4 (use-nigel-ticks '(-48 24 24 1/8-5 1/8-5 1/8-5 1/8-5 1/8-5)))
  40.  
  41. (setq mel1 (gen-trans a 2))
  42. (setq mel2 (gen-notrans b 2))
  43. (setq mel3 (gen-notrans f 2))
  44.  
  45. (setq mel4 (fill-template rhy2 (symbol-repeat 2 row)))
  46.  
  47. (setq vel1 '(112 96 84 72))
  48. (setq vel2 (vector-to-list (vector-round 30 120
  49.                               (gen-sin 2 0.7 32 120))))
  50. (setq vel3 (vector-to-list (vector-round 30 120 (reverse (change-length times 3 rhy3)))))
  51. (setq vel4 '(0 20 40 60 65 70 75 80))
  52.  
  53. (def-symbol
  54.   syn1 mel1
  55.   syn2 mel2
  56.   syn3 mel3
  57.   bas1 mel4
  58.   bas2 mel3
  59. )
  60.  
  61. (def-length
  62.   syn1 rhy4
  63.   syn2 rhy2
  64.   syn3 rhy3
  65.   bas1 rhy1
  66.   bas2 (append rhy4 rhy3 rhy2)
  67. )
  68.  
  69. (def-velocity
  70.   syn1 vel4
  71.   syn2 vel2
  72.   syn3 vel3
  73.   bas1 vel1
  74.   bas2 (append vel4 vel3 vel2)
  75. )
  76.  
  77. (compile-song-p  "ccl;output:" 1/2 "duo"
  78. ; BARS          |--|----|---|-|--|---|----|-|
  79. syn1 tonal1     "- - ---    --  ---        -"
  80. syn2 chord1     " -     --          -----   "
  81. syn3 chord2     "   -     --       -     -- "
  82. bas1 chord3     "---           - --         "
  83. bas2 tonal      "    ---   ---  -  - ----  -"
  84. )
  85.  
  86. ; Duo for Clavinet and Bass Synth
  87.